/**
 * This software was produced for the U. S. Government
 * under Contract No. FA8721-09-C-0002, and is
 * subject to the Rights in Noncommercial Computer Software
 * and Noncommercial Computer Software Documentation Clause
 * (DFARS) 252.227-7014 (JUN 1995)
 * 
 * (c) 2009 The MITRE Corporation. All Rights Reserved.
 *
 * SPMIF to OPNET Translator
 * Author: ewalters
 * Created: 11:48:42 AM, Aug 3, 2007
 * MITRE Corporation
 */
package com.mitre.spmif2opnet.analysis;


/**
 * Abstract class that represents each S-PMIF variable, i.e. S-PMIF node that points 
 *  to other information, be it another node (LinkSymbol), a synchronization node 
 *  (SyncSymbol), or a graph (ExpandedSymbol).
 */
public abstract class Symbol {
	/**
	 * What is the identifier of the symbol?
	 */
	private Identifier _id; 
	
	/**
	 * Generic symbol constructor
	 * @param id the identifier
	 */
	public Symbol(Identifier id) {
		_id = new Identifier(id);
	}

	/** 
	 * Identifier accessor
	 * @return the id
	 */
	public Identifier getId() {
		return _id;
	}
	
	/**
	 * Has the symbol been resolved?
	 * @return resolved?
	 */
	public abstract boolean isResolved();

	/**
	 * Resolve the symbol using the given analysis context
	 * @param c the context
	 */
	public abstract void resolve(AnalysisContext c);
}

